#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>
#include <QTabWidget>
#include <QMessageBox>
#include "stdafx.h"
// 包含各个示例的头文件
#include "progress_example.h"
#include "progress_dialog_example.h"
#include "threaded_progress_example.h"
#include <myprogress.h>
#include <filedownloader.h>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    // 创建主窗口
    QWidget mainWindow;
    mainWindow.setWindowTitle("Qt 进度条示例大全");
    mainWindow.resize(600, 400);

    // 创建布局
    QVBoxLayout* mainLayout = new QVBoxLayout(&mainWindow);

    // 创建标题
    QLabel* titleLabel = new QLabel("Qt 进度条组件完整演示");
    titleLabel->setAlignment(Qt::AlignCenter);
    QFont titleFont = titleLabel->font();
    titleFont.setPointSize(16);
    titleFont.setBold(true);
    titleLabel->setFont(titleFont);

    // 创建标签页
    QTabWidget* tabWidget = new QTabWidget();

    // 创建三个示例页面
    ProgressExample* progressExample = new ProgressExample();
    ProgressDialogExample* dialogExample = new ProgressDialogExample();
    ThreadedProgressExample* threadedExample = new ThreadedProgressExample();
    myprogress*  myprogre = new myprogress();
    // 添加到标签页
    tabWidget->addTab(progressExample, "基础进度条");
    tabWidget->addTab(dialogExample, "进度对话框");
    tabWidget->addTab(threadedExample, "多线程进度");
    tabWidget->addTab(myprogre, "我的进度条");

    // 创建说明区域
    QLabel* infoLabel = new QLabel(
        "这个程序演示了 Qt 中三种不同的进度条实现方式：\n"
        "1. 基础进度条 (QProgressBar) - 简单的嵌入式进度显示\n"
        "2. 进度对话框 (QProgressDialog) - 带取消功能的模态对话框\n"
        "3. 多线程进度 - 使用工作线程避免界面卡顿"
    );
    infoLabel->setWordWrap(true);
    infoLabel->setAlignment(Qt::AlignLeft);
    infoLabel->setStyleSheet("background-color: #f0f0f0; padding: 10px; border-radius: 5px;");

    // 添加到主布局
    mainLayout->addWidget(titleLabel);
    mainLayout->addSpacing(10);
    mainLayout->addWidget(infoLabel);
    mainLayout->addSpacing(10);
    mainLayout->addWidget(tabWidget);
    mainLayout->addSpacing(10);
    mainLayout->addWidget(tabWidget);
    // 显示窗口
    mainWindow.show();

    return app.exec();
}